package com.ruoyi.vqms.service;

import com.ruoyi.vqms.domain.VQMSVisitRecordYuchai;
import com.ruoyi.vqms.domain.VQMSVisitRecordYuchi;
import com.ruoyi.vqms.domain.dto.RegisterWarehouseVO;
import com.ruoyi.vqms.domain.dto.WarehouseDTO;

import java.util.List;

/**
 * 访问记录（玉柴） 服务层
 */
public interface IVQMSVisitRecordYuchaiService {

    List<VQMSVisitRecordYuchai> selectList(VQMSVisitRecordYuchai vqmsVisitRecordYuchai);

    /**
     * 微信小程序使用
     * @param vqmsVisitRecordYuchai
     * @return
     */
    List<VQMSVisitRecordYuchai> wxSelectList(VQMSVisitRecordYuchai vqmsVisitRecordYuchai);

    int add(VQMSVisitRecordYuchai vqmsVisitRecordYuchai);

    VQMSVisitRecordYuchai getById(Long id);

    int update(VQMSVisitRecordYuchai vqmsVisitRecordYuchai);

    int delete(Long[] ids);

    int countByFactoryId(Long factoryId);

    /**
     *根据号码查创建时间最新的一条记录
     * @param phone
     * @return
     */
    VQMSVisitRecordYuchai getYuchaiFactoryTime(String phone);

    /**
     * 查询是否有对应进厂记录（两天内）
     * @param vqmsVisitRecordYuchai
     * @return
     */
    VQMSVisitRecordYuchai getYuchaiAccess(VQMSVisitRecordYuchai vqmsVisitRecordYuchai);

    /**
     * 查询昨日所有未确认预约记录
     * @return
     */
    List<VQMSVisitRecordYuchai> selectYuchaiWaitingConfirmed();

    /**
     * 统计昨天访客总量
     * @return
     */
    int statisticsYesterday(VQMSVisitRecordYuchai vqmsVisitRecordYuchai);

    /**
     * 统计今天访客总量
     * @return
     */
    int statisticsToday(VQMSVisitRecordYuchai vqmsVisitRecordYuchai);

    /**
     * 统计各仓库登记总量（空为‘南大门’）
     * @return
     */
    List<WarehouseDTO> statisticalWarehouse();

    /**
     * 根据预约ID查询玉柴访客记录
     * @param reservationId
     * @return
     */
    VQMSVisitRecordYuchai getReservationId(Long reservationId);

    /**
     * 查询出厂时间为空，创建时间超过48小时
     * @return
     */
    List<VQMSVisitRecordYuchai> getFactoryTimeout();

    /**
     * 根据号码查询最新的一条记录
     * @return
     */
    List<VQMSVisitRecordYuchai> getLatestCreateTime(VQMSVisitRecordYuchai vqmsVisitRecordYuchai);

    /**
     * 数据大屏统计当月各仓库登记情况
     * @return
     */
    List<RegisterWarehouseVO> getDataVRegister();
}
